#include <iostream>
#include <string>
#include <vector>

size_t split(const std::string &str, const std::string &sep, std::vector<std::string> &result)
{
    // news...music.#.pop
    // 分割的思想就是：
    //  1. 查找指定字符的位置(从0位置)，找到之后进行分割
    //  2. 从上次查找的位置继续找，并且继续分割

    size_t pos, idx = 0;
    while(idx < str.size())
    {
        pos = str.find(sep, idx);
        if(pos == std::string::npos)    // 没找到
        {
            // 从查找的位置截取到末尾
            result.push_back(str.substr(idx));
            return result.size();
        }
        // 此时可能存在连续个sep字符的情况，所以这里就要全部跳过，需要判断
        if(pos == idx)
        {
            idx = pos + sep.size();
            continue;
        }
        result.emplace_back(str.substr(idx, pos - idx));
        idx = pos + sep.size();        
    }
    return result.size();
}

int main ()
{
    std::string str = "...news...music......#.pop.";
    std::vector<std::string> arry;

    int n = split(str, ".", arry);
    
    std::cout  << " ";

    for(auto &e : arry)
    {
        std::cout << e << " ";
    }
    std::cout << "\n";
    // std::string str1{"adssa"};
    // std::cout << sizeof(str1)<< " " << str1.size() << std::endl;
    return 0;
}